/*
 * INET		An implementation of the TCP/IP protocol suite for the LINUX
 *		operating system.  INET is implemented using the  BSD Socket
 *		interface as the means of communication with the user level.
 *
 *		Definitions of the socket-level I/O control calls.
 *
 * Version:	@(#)sockios.h	1.0.2	03/09/93
 *
 * Authors:	Ross Biro
 *		Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
 *
 *		This program is free software; you can redistribute it and/or
 *		modify it under the terms of the GNU General Public License
 *		as published by the Free Software Foundation; either version
 *		2 of the License, or (at your option) any later version.
 */
#ifndef _LINUX_SOCKIOS_H
#define _LINUX_SOCKIOS_H

#include <asm/sockios.h>

/* Linux-specific socket ioctls */
#define SIOCINQ		FIONREAD
#define SIOCOUTQ	TIOCOUTQ

/* Routing table calls. */
#define SIOCADDRT	0x890B	/* add routing table entry      */
#define SIOCDELRT	0x890C	/* delete routing table entry   */
#define SIOCRTMSG	0x890D	/* call to routing system       */

/* Socket configuration controls. */
#define SIOCGIFNAME	0x8910	/* get iface name               */
#define SIOCSIFLINK	0x8911	/* set iface channel            */
#define SIOCGIFCONF	0x8912	/* get iface list               */
#define SIOCGIFFLAGS	0x8913	/* get flags                    */
#define SIOCSIFFLAGS	0x8914	/* set flags                    */
#define SIOCGIFADDR	0x8915	/* get PA address               */
#define SIOCSIFADDR	0x8916	/* set PA address               */
#define SIOCGIFDSTADDR	0x8917	/* get remote PA address        */
#define SIOCSIFDSTADDR	0x8918	/* set remote PA address        */
#define SIOCGIFBRDADDR	0x8919	/* get broadcast PA address     */
#define SIOCSIFBRDADDR	0x891a	/* set broadcast PA address     */
#define SIOCGIFNETMASK	0x891b	/* get network PA mask          */
#define SIOCSIFNETMASK	0x891c	/* set network PA mask          */
#define SIOCGIFMETRIC	0x891d	/* get metric                   */
#define SIOCSIFMETRIC	0x891e	/* set metric                   */
#define SIOCGIFMEM	0x891f	/* get memory address (BSD)     */
#define SIOCSIFMEM	0x8920	/* set memory address (BSD)     */
#define SIOCGIFMTU	0x8921	/* get MTU size                 */
#define SIOCSIFMTU	0x8922	/* set MTU size                 */
#define SIOCSIFNAME	0x8923	/* set interface name */
#define	SIOCSIFHWADDR	0x8924	/* set hardware address         */
#define SIOCGIFENCAP	0x8925	/* get/set encapsulations       */
#define SIOCSIFENCAP	0x8926
#define SIOCGIFHWADDR	0x8927	/* Get hardware address         */
#define SIOCGIFSLAVE	0x8929	/* Driver slaving support       */
#define SIOCSIFSLAVE	0x8930
#define SIOCADDMULTI	0x8931	/* Multicast address lists      */
#define SIOCDELMULTI	0x8932
#define SIOCGIFINDEX	0x8933	/* name -> if_index mapping     */
#define SIOGIFINDEX	SIOCGIFINDEX	/* misprint compatibility :-)   */
#define SIOCSIFPFLAGS	0x8934	/* set/get extended flags set   */
#define SIOCGIFPFLAGS	0x8935
#define SIOCDIFADDR	0x8936	/* delete PA address            */
#define	SIOCSIFHWBROADCAST	0x8937	/* set hardware broadcast addr  */
#define SIOCGIFCOUNT	0x8938	/* get number of devices */
#define SIOCKILLADDR	0x8939	/* kill sockets with this local addr */

#define SIOCGIFBR	0x8940	/* Bridging support             */
#define SIOCSIFBR	0x8941	/* Set bridging options         */

#define SIOCGIFTXQLEN	0x8942	/* Get the tx queue length      */
#define SIOCSIFTXQLEN	0x8943	/* Set the tx queue length      */

/* SIOCGIFDIVERT was:	0x8944		Frame diversion support */
/* SIOCSIFDIVERT was:	0x8945		Set frame diversion options */

#define SIOCETHTOOL	0x8946	/* Ethtool interface            */

#define SIOCGMIIPHY	0x8947	/* Get address of MII PHY in use. */
#define SIOCGMIIREG	0x8948	/* Read MII PHY register.       */
#define SIOCSMIIREG	0x8949	/* Write MII PHY register.      */

#define SIOCWANDEV	0x894A	/* get/set netdev parameters    */

/* ARP cache control calls. */
		    /*  0x8950 - 0x8952  * obsolete calls, don't re-use */
#define SIOCDARP	0x8953	/* delete ARP table entry       */
#define SIOCGARP	0x8954	/* get ARP table entry          */
#define SIOCSARP	0x8955	/* set ARP table entry          */

/* RARP cache control calls. */
#define SIOCDRARP	0x8960	/* delete RARP table entry      */
#define SIOCGRARP	0x8961	/* get RARP table entry         */
#define SIOCSRARP	0x8962	/* set RARP table entry         */

/* Driver configuration calls */

#define SIOCGIFMAP	0x8970	/* Get device parameters        */
#define SIOCSIFMAP	0x8971	/* Set device parameters        */

/* DLCI configuration calls */

#define SIOCADDDLCI	0x8980	/* Create new DLCI device       */
#define SIOCDELDLCI	0x8981	/* Delete DLCI device           */

#define SIOCGIFVLAN	0x8982	/* 802.1Q VLAN support          */
#define SIOCSIFVLAN	0x8983	/* Set 802.1Q VLAN options      */

/* bonding calls */

#define SIOCBONDENSLAVE	0x8990	/* enslave a device to the bond */
#define SIOCBONDRELEASE 0x8991	/* release a slave from the bond */
#define SIOCBONDSETHWADDR      0x8992	/* set the hw addr of the bond  */
#define SIOCBONDSLAVEINFOQUERY 0x8993	/* rtn info about slave state   */
#define SIOCBONDINFOQUERY      0x8994	/* rtn info about bond state    */
#define SIOCBONDCHANGEACTIVE   0x8995	/* update to a new active slave */

/* bridge calls */
#define SIOCBRADDBR     0x89a0	/* create new bridge device     */
#define SIOCBRDELBR     0x89a1	/* remove bridge device         */
#define SIOCBRADDIF	0x89a2	/* add interface to bridge      */
#define SIOCBRDELIF	0x89a3	/* remove interface from bridge */

/* Device private ioctl calls */

/*
 *	These 16 ioctls are available to devices via the do_ioctl() device
 *	vector. Each device should include this file and redefine these names
 *	as their own. Because these are device dependent it is a good idea
 *	_NOT_ to issue them to random objects and hope.
 *
 *	THESE IOCTLS ARE _DEPRECATED_ AND WILL DISAPPEAR IN 2.5.X -DaveM
 */

#define SIOCDEVPRIVATE	0x89F0	/* to 89FF */

/*
 *	These 16 ioctl calls are protocol private
 */

#define SIOCPROTOPRIVATE 0x89E0	/* to 89EF */
#endif /* _LINUX_SOCKIOS_H */
